<!--"$Id-->
<html>
<head>
<title>The Berkeley DB Package: DB 3.1.14 Change Log</title>
<meta name="description" content="Berkeley DB: A database programmatic toolkit.">
<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods">
</head>
<body bgcolor=white>

<h3 align=center>Berkeley DB 3.1.14 Change Log</h3>

<h3>Database On-Disk Format Changes:</h3>
<ol>
<li>The on-disk Btree/Recno format has changed from version 7 to version
8, and the on-disk Hash format has changed from version 6 to version 7.
For information on upgrading database formats, see "Upgrading Applications
to the 3.1 release" in the Berkeley DB Reference Guide for more
information.
</ol>

<h3>Major New Features:</h3>
<ol>

<li>Berkeley DB now includes support for VxWorks systems.
<li>Off-page duplicates now stored in an on-disk B+tree structure,
greatly speeding searches in sorted duplicate sets.  In addition,
a count of duplicate items is now maintained for all duplicate sets,
providing better optimization of logical joins. [#303]
<li>New cursor method, DBcursor-&gt;c_count, that returns the number of
duplicate items associated with the referenced key. [#303]
<li>Berkeley DB now includes a RPC-based client/server implementation. [#426]
<li>Recovery to a specified time is supported. [#855]
<li>New cursor method, DB-&gt;verify, that supports database verification
and salvage. [#588, #827, #1156]
<li>Add a Berkeley DB method to rename databases. [#1492]
<li>Significantly increased verbose error output for debugging support. [#1866]

</ol>
<h3>Interface Additions and Changes:</h3>
<ol>

<li>All of the Berkeley DB utilities now support the -V option to display
the library version.
<li>It is now possible to set almost all the Berkeley DB environment
configuration options in the environment's DB_CONFIG file.  There are new
DB_ENV handle methods for setting the database directory, logging
directory and temporary file directory.  These were previously set using
the DB_DATA_DIR, DB_LOG_DIR and DB_TMP_DIR strings in the config argument
to the DB_ENV-&gt;open and DB_ENV-&gt;remove methods.  As part of this change,
the config argument to the DB_ENV-&gt;open and DB_ENV-&gt;remove methods has
been removed in favor of the new methods.
<li>Add a private field to the DBT structure, enabling applications to
pass private information into the Btree/Hash comparison/hashing functions.
<li>Change the redo parameter of the function passed to the
DBENV-&gt;set_tx_recover interface used to be an integer set to any one
of a number of #defined values.  The <b>redo</b> parameter has been
replaced by the <b>op</b> parameter, an enumerated type. [#606]
<li>Add support for a new DBcursor-&gt;c_get flags, DB_NEXT_NODUP
(DB_PREV_NODUP), which return the next (previous) key/data pair where the
data item is not a duplicate of the current key. [#887, #1985]
<li>Modify the DB-&gt;put interface, when using the DB_APPEND flag, to
support DBT conventions. [#1523]
<li>Add DB_NODUPDATA option to the DB-&gt;put and DBcursor-&gt;c_put
methods to disallow duplicate duplicates. [#1866]
<li>Add a fast return of approximate row counts for all access methods,
add separate key and data statistics for the Hash access method.
Regularize the naming scheme for all statistics. [#1978]
<li>Move application-wide configuration interfaces from DbEnv method
set to static function interfaces. [#2245]

</ol>
<h3>General Environment Changes:</h3>
<ol>

<li>It is now possible to build and run Berkeley DB on systems that do
not have either of the mmap(2) or shmget(2) interfaces.
<li>Take two checkpoints after recovery completes so that on next recovery
no work needs to be redone. [#1316]
<li>Fix a bug where, if DIAGNOSTIC was #defined, recovery could incorrectly
assert that no files should be open and drop core. [#1316]
<li>Fix a bug where recovering from deleting a page in a database could
cause other operations to not be rolled-forward. [#1532]
<li>Fix a bug where HP-UX msemaphore semaphores could cause mutex races
on HP-UX 10.XX. [#2199]

</ol>
<h3>General Access Method Changes:</h3>
<ol>

<li>Add support for zero-length keys. [#625]
<li>Fix a bug where join cursors were not automatically closed when the
primary DB handle was closed. [#1325]
<li>Fix a bug where the DB-&gt;remove method of an entire database would create
a backup file even if the application wasn't running with transactions; the
backup files were never removed. [#1357]
<li>Fix a bug where when adding a new page in a chain of duplicates the
LSN of a page could be unnecessarily updated, confusing recovery. [#1412]
<li>Fix a bug where creating a subdatabase ignored the specification of
a non-standard page size. [#1422]
<li>Fix a bug where join cursors didn't correctly support DB_DBT_XXX
flags. [#1639]
<li>Fix bugs in join cursor handling of DBTs, and associated memory leaks.
[#1777, #1929, #1940]
<li>Change error return for duplicate duplicates from EINVAL to
DB_KEYEXIST. [#1866]
<li>Fix a bug where DB handles opened in threaded environments were not
themselves automatically threaded. [#1943]
<li>Fix a bug where the DB-&gt;remove method could leak memory. [#2066]

</ol>
<h3>Btree Access Method Changes:</h3>
<ol>

<li>Increase the accuracy of the returned statistics count for Btree key
and data items.
<li>Fix a bug where the next page in the leaf page chain might not be
updated during recovery. [#1320]
<li>Fix a bug where Btrees supporting retrieval by record number could
become corrupted for some data sets. [#1663]
<li>Fix a bug where Btrees supporting retrieval by record number could
have incorrect record counts after reverse splits. [#1688]
<li>Fix a bug where keys stored as overflow items could be incorrectly
compared. [#1994]

</ol>
<h3>Hash Access Method Changes:</h3>
<ol>

<li>Fix a bug where partial puts in the hash access method could lead to
heap corruption. [#1300]
<li>Fix a bug where duplicate data items were not correctly identified
during logging and could be incorrectly restored during recovery. [#1377]

</ol>
<h3>Queue Access Method Changes:</h3>
<ol>

<li>Fix a bug where an invalid lock was acquired when duplicating a cursor
in Concurrent Data Store.
<li>Fix a bug where EAGAIN could be returned instead of DB_LOCK_DEADLOCK.
[#1354]
<li>Fix a bug where the Queue Access Method could drop core if a put
operation failed. [#1449]
<li>Fix a bug where user requests for non-blocking locks were ignored. [#1970]

</ol>
<h3>Recno Access Method Changes:</h3>

<blockquote>None.</blockquote>

<h3>C++ API Changes:</h3>
<ol>

<li>Fix a large number of warnings and portability problems for various
C++ compilers.
<li>Add "void" type to operator = in all examples for portability.
<li>Fix a bug where the DB_CXX_NO_EXCEPTIONS in the Db constructor was
causing immediate failure of the call. [#1350]
<li>Fix problems with disposing of Db and DbEnv objects: the underlying
DB, DB_ENV objects were looked at after a close(), which is illegal,
since the memory is freed.  And in the case where Db::Db() is called
with a NULL DbEnv, we create our own DbEnv object, and this was not
being deleted on close(). [#1466, #1467, #1468]
<li>Fix a bug where Db::remove and Db::upgrade were specified 'static'.  [#1469]
<li>Fix a bug where memory freed during open/close was written to in the
destructor. [#1889]
<li>Fix a bug where Db::close and DbEnv::close and their associated
destructors interacted wrongly. [#1998]

</ol>
<h3>Java API Changes:</h3>
<ol>

<li>Fix a bug where, when building with versions 1.1.* of the JDK, an
explicit reference for the CLASSPATH prevented compilation from within
MS Visual studio. [#1334]
<li>Avoid using true/false as they aren't recognized by older C++ systems
(in this case, SPARC Solaris 2.6 with Sun Workshop 4.2). [#1384]
<li>Fix a bug where Java could fail to run on Solaris due to memory
allocation issues with shared libraries. [#1384]
<li>Rewrite the Java API in C for portability reasons (it was previously
implemented in C++). [#1384]

</ol>
<h3>Tcl API Changes:</h3>
<ol>

<li>The -mpool option to the berkdb env command is now the default.
<li>The -txn option to the berkdb env command now implies the -lock and -log
options.

</ol>
<h3>RPC Client/Server Changes:</h3>
<blockquote>None.</blockquote>

<h3>XA Resource Manager Changes:</h3>
<ol>

<li>Fix a bug where returned XID fields (currently unused by Tuxedo) were
being incorrectly zeroed. [#1840]

</ol>
<h3>Locking Subsystem Changes:</h3>
<ol>

<li>Lock objects with waiters are now separately threaded to make deadlock
detection faster. [#1983]
<li>Fix a bug where locks could be leaked if the DB_LOCK_NOWAIT flag was
specified and the lock was already held. [#2072]
<li>Add a count of the lock requests that failed because DB_LOCK_NOWAIT
was set to the lock region statistics. [#2072]

</ol>
<h3>Logging Subsystem Changes:</h3>
<ol>

<li>Fix a bug where logging print routines displayed file IDs as unsigned
values instead of signed values.
<li>Change the Windows/NT release to no longer pre-allocate logfiles.
[#849, #1780]
<li>Fix a bug where if you attempt to do catastrophic recovery on a log
that spans a crash you can get errors of the form "open: invalid
argument".  [#1365]
<li>Fix a bug where the DB_ARCH_LOG flag to the log_archive interface
could fail to return the correct set of log filenames. [#1426]
<li>Fix a bug where free'd memory could be accessed in an error path. [#2053]

</ol>
<h3>Buffer Pool Subsystem Changes:</h3>
<ol>

<li>Fix a bug where Berkeley DB could fail when too many databases were
created in an environment. [#1528]

</ol>
<h3>Transaction Subsystem Changes:</h3>
<ol>

<li>Fix a number of bugs in DB file registration that could cause problems
if files were repeatedly opened and closed. [#1943]
<li>Remove all requirements that applications flush the log before closing
the environment to ensure that no additional work needs to be done during
recovery. [#2006]
<li>Fix a bug where an unthreaded DB handle could be incorrectly used in
a threaded environment, during recovery. [#2033]

</ol>
<h3>Utility Changes:</h3>
<ol>

<li>Convert the supporting utilities to use common code for signal
and process-ID log file handling. [#1596]

</ol>
<h3>Configuration, Documentation, Portability and Build Changes:</h3>
<ol>

<li>Upgrade to the current Perl BerkeleyDB and DB_File modules.
<li>Upgrade to the current Scriptics Tcl release (8.3), add the --with-tcl
option to automatically use the tclConfig.sh information to correctly
compile the Tcl API and test suite.
<li>Upgrade to current versions of libtool (1.3.4), autoconf and the
config scripts.
<li>Update the test suite to no longer require a large set of UNIX
utilities to run.
<li>Convert to CVS/RCS source repository and file revision Ids.
<li>Include Windows 2000 support.
<li>Support systems without strtoul(3) support. [#1337]
<li>Fix a bug where the DB 1.85 API interface was incorrectly named, so
configuration scripts wouldn't find "dbopen" and applications wouldn't
load. [#1345]
<li>Fix a bug where AIX wouldn't compile because there was no MUTEX_INIT
macro for the test-and-set mutexes. [#1354]
<li>Fix a bug where Berkeley DB incorrectly aligned memory from the shared
memory regions for gcc on the UltraSparc. [#1395, #1404]
<li>Fix a bug where DB did not correctly build on the Siemens Nixdorf
Reliant Unix because the initspin() function was expected to return an
int. [#1418]
<li>Fix a bug where DB would fail on HP-UX, apparently the HP-UX C library
contains pread/pwrite symbols, but they don't work. [#1459]
<li>Call GetTempDir() to determine system's temp directory on Windows. [#1478]
<li>Fix a case where large buffers could be allocated on the stack when
running on Windows, leading to stack resource starvation in multithreaded
programs.  [#1530]
<li>Fix a bug where DB would fail to compile on AIX because of a missing
MUTEX_INIT definition. [#1561]
<li>Fix a bug where out-of-memory condition when scanning a directory failed
to close the directory. [#1872]
<li>Remove all use of signal functions. [#1964]
<li>Fix a bug where the POSIX fcntl system call would be called even after
the underlying Berkeley DB open call had been replaced by the application.
[#2114]
<li>Fix a bug where the standard free routine was still called when finishing
a directory scan, even after the application had replaced the underlying OS
functionality. [#2115]

</ol>

</body>
</html>
